home *** CD-ROM | disk | FTP | other *** search
/ ADA Programming Guide / ADA Programming Guide.iso / ada_lrm / lr5bg.src < prev    next >
Text File  |  1996-01-30  |  4KB  |  133 lines

  1. --                Ada LRM Reader
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8. package body LRM_GLOBAL is 
  9.  
  10.  
  11.  
  12.  
  13.  
  14.   procedure VALIDATE_CITATION(CITATION_REQUESTED : in STRING; 
  15.                               REQUEST_LENGTH     : in NATURAL; 
  16.                               CITATION_TO_GET    : out LEGAL_CITATIONS) is 
  17.   begin
  18.  
  19.     CITATION_TO_GET := LEGAL_CITATIONS'VALUE(CITATION_REQUESTED(1 .. 
  20.       REQUEST_LENGTH)); 
  21.  
  22.   end VALIDATE_CITATION; 
  23.  
  24.  
  25.  
  26.  
  27. ------------------------------------------------------------------------------
  28.  
  29.  
  30.   procedure READ_IN_FILE_NAMES(FILE_NAMES_DATA_FILE_NAME: in STRING) is
  31.  
  32.     FILE_NAMES_DATA_FILE: FILE_TYPE;
  33.     LENGTH: INTEGER;
  34.  
  35.   begin
  36.     OPEN (
  37.     FILE => FILE_NAMES_DATA_FILE,
  38.     MODE => IN_FILE,
  39.         NAME => FILE_NAMES_DATA_FILE_NAME);     ---- := "LRMinit  "
  40.     GET_LINE(FILE_NAMES_DATA_FILE, CHAP_POINTERS_FILE_NAME, LENGTH);
  41.     GET_LINE(FILE_NAMES_DATA_FILE, CREDITS_FILE_NAME, LENGTH);
  42.     GET_LINE(FILE_NAMES_DATA_FILE, EXPLANATION_FILE_NAME, LENGTH);
  43.     GET_LINE(FILE_NAMES_DATA_FILE, LRM_FILE_NAME_PREFIX
  44.     , LRM_FILE_NAME_PREFIX_LENGTH);
  45.     GET_LINE(FILE_NAMES_DATA_FILE, LRM_READER_SAVE_FILE_NAME, LENGTH);
  46.     GET_LINE(FILE_NAMES_DATA_FILE, MENU_MAIN_FILE_NAME, LENGTH);
  47.     GET_LINE(FILE_NAMES_DATA_FILE, MENU_ANNEX_FILE_NAME, LENGTH);
  48.     GET_LINE(FILE_NAMES_DATA_FILE, MENU_CHAPTER_FILE_NAME, LENGTH);
  49.     GET_LINE(FILE_NAMES_DATA_FILE, WELCOME_MSG_FILE_NAME, LENGTH);
  50.     CLOSE (FILE => FILE_NAMES_DATA_FILE);
  51.   end READ_IN_FILE_NAMES ;
  52.  
  53.  
  54.   --------------------------------------------------------------------------
  55.  
  56.   procedure GENERATE_CHAP_POINTERS(CHAP_POINTERS : in out CHAP_POINTER_LIST) is 
  57.  
  58.     CITATION      : LEGAL_CITATIONS; 
  59.     CITATION_FILE : FILE_TYPE; 
  60.     LAST          : NATURAL; 
  61.     TEMP_CITATION : STRING(1 .. 60); 
  62.  
  63.     --DEBUG_FILE    : FILE_TYPE; 
  64.  
  65.   begin
  66.  
  67.     OPEN(FILE => CITATION_FILE, MODE => IN_FILE, NAME => 
  68.       CHAP_POINTERS_FILE_NAME); 
  69.     while not END_OF_FILE(CITATION_FILE) loop
  70.       TEMP_CITATION := (others => ' '); 
  71.       GET_LINE(CITATION_FILE, TEMP_CITATION, LAST); 
  72.  
  73.       declare
  74.         I    : NATURAL; 
  75.         KEEP : NATURAL; 
  76.       begin
  77.         for I in 1 .. 60 loop
  78.           case TEMP_CITATION(I) is 
  79.             when '0' .. '9' | 'C' | 'S' | 'V' | 'P' | 'c' | 'p' | 's' | 'v' => 
  80.               null; 
  81.             when others => 
  82.               KEEP := I; 
  83.               exit; 
  84.           end case; 
  85.  
  86.         end loop; 
  87.  
  88.         --  Convert string temp_citation to enumerated variable citation.
  89.         ----  LEGAL_CITATIONS_IO.GET(CITATION_FILE, CITATION); 
  90.  
  91.         CITATION := LEGAL_CITATIONS'VALUE(TEMP_CITATION(1 .. KEEP - 1)); 
  92.  
  93.       end; 
  94.  
  95.       -- GET(CITATION_FILE, CHAP_POINTERS(CITATION)); 
  96.  
  97.       declare
  98.         I       : NATURAL; 
  99.         J       : NATURAL; 
  100.         LASTNUM : NATURAL; 
  101.       begin
  102.         for I in reverse 1 .. 60 loop
  103.           case TEMP_CITATION(I) is 
  104.             when '0' .. '9' => 
  105.               LASTNUM := I; 
  106.               J := I; 
  107.               loop
  108.                 J := J - 1; 
  109.                 if TEMP_CITATION(J) = ' ' then 
  110.                   exit; 
  111.                 end if; 
  112.               end loop; 
  113.               exit; 
  114.             when others => 
  115.               null; 
  116.           end case; 
  117.         end loop; 
  118.         CHAP_POINTERS(CITATION) := INTEGER'VALUE(TEMP_CITATION(J .. LASTNUM)); 
  119.       end; 
  120.     end loop; 
  121.     CLOSE(CITATION_FILE); 
  122.  
  123.   end GENERATE_CHAP_POINTERS; 
  124.  
  125.  
  126.  
  127.   ---------------------------------------------------------------------------
  128.  
  129.  
  130. ------------------------------------------------------------------------------
  131.  
  132. end LRM_GLOBAL; 
  133.